#include "NamePipe.hpp"

int main()
{    
    NamePipe name_pipe(fifoname);
    //创建管道
    name_pipe.Create();

    //以读方式打开管道
    name_pipe.OpenofRead();

    //读取数据
    std::string message;
    while(true)
    {
        bool ret = name_pipe.Read(&message);
        if(!ret)
            break;
        std::cout << "client say@ " << message << std::endl;
    }

    //关闭、回收管道
    name_pipe.Close();
    name_pipe.Remove();

    return 0;
}


// int main()
// {
//     //创建命名管道文件
//     //成功返回0，失败返回-1
//     int n = mkfifo(fifoname.c_str(), mode);
//     if(n == 0)
//     {
//         std::cout << "mkfifo success" << std::endl;
//     }
//     else
//     {
//         //std::cout << "mkfifo failed" << std::endl;
//         perror("mkfifo");
//         exit(1);
//     }

//     //以读方式打开管道文件
//     //只打开一端，open会陷入阻塞
//     int fd = open(fifoname.c_str(), O_RDONLY);
//     if(fd < 0)
//     {
//         perror("open");
//         exit(2);
//     }
//     std::cout << "open file success" << std::endl;

//     //读取数据
//     char buffer[SIZE] = {0};
//     while(true)
//     {
//         buffer[0] = 0;//清空原有内容
//         ssize_t num = read(fd, buffer, sizeof(buffer)-1);
//         if(num > 0)
//         {
//             buffer[num] = 0;
//             std::cout << "client say@ " << buffer <<std::endl;
//         }
//         else if(num == 0)
//         {
//             std::cout << "clinet quit, me too" << std::endl;
//             break;
//         }
//         else
//         {
//             break;
//         }
//         std::cout << "num: " << num << std::endl;
//      }

//     //关闭文件
//     close(fd);
//     unlink(fifoname.c_str());
//     return 0;
// }